2013 Nanjing Ladies Open – Singles
Zhang Shuai won the tournament after Ayumi Morita had to retire with an injured left hamstring having lost the first set 6–4.
Singles | |
---|---|
2013 Nanjing Ladies Open | |
Champion | ![]() |
Runner-up | ![]() |
Final score | 6–4, ret. |
This was a new event of the WTA 125K series.
Seeds
Kimiko Date-Krumm (first round) Yanina Wickmayer (semifinals) Zhang Shuai (champion) Ayumi Morita (final; retired with hamstring injury) Caroline Garcia (first round) Misaki Doi (second round) Ajla Tomljanović (second round) Anna Karolína Schmiedlová (quarterfinals)
Draw
Key
- Q = Qualifier
- WC = Wild Card
- LL = Lucky Loser
- Alt = Alternate
- SE = Special Exempt
- PR = Protected Ranking
- ITF = ITF entry
- JE = Junior Exempt
- w/o = Walkover
- r = Retired
- d = Defaulted
Finals
Semifinals | Final | ||||||||||||
Q | ![]() | 66 | 2 | ||||||||||
4 | ![]() | 78 | 6 | ||||||||||
4 | ![]() | 4 | 0r | ||||||||||
3 | ![]() | 6 | 0 | ||||||||||
3 | ![]() | 1 | 6 | 6 | |||||||||
2 | ![]() | 6 | 4 | 4 | |||||||||
Top half
First round | Second round | Quarterfinals | Semifinals | ||||||||||||||||||||||||
1 | ![]() | 3 | 2 | ||||||||||||||||||||||||
![]() | 6 | 6 | ![]() | 6 | 65 | 2 | |||||||||||||||||||||
![]() | 4 | 4 | WC | ![]() | 3 | 77 | 6 | ||||||||||||||||||||
WC | ![]() | 6 | 6 | WC | ![]() | 3 | 6 | 1 | |||||||||||||||||||
LL | ![]() | 3 | 4 | Q | ![]() | 6 | 2 | 6 | |||||||||||||||||||
Q | ![]() | 6 | 6 | Q | ![]() | 6 | 6 | ||||||||||||||||||||
Q | ![]() | 2 | 77 | 4 | 6 | ![]() | 3 | 4 | |||||||||||||||||||
6 | ![]() | 6 | 65 | 6 | Q | ![]() | 66 | 2 | |||||||||||||||||||
4 | ![]() | 6 | 6 | 4 | ![]() | 78 | 6 | ||||||||||||||||||||
![]() | 2 | 4 | 4 | ![]() | 67 | 712 | 6 | ||||||||||||||||||||
![]() | 6 | 6 | ![]() | 79 | 610 | 4 | |||||||||||||||||||||
![]() | 0 | 0 | 4 | ![]() | 68 | 77 | 7 | ||||||||||||||||||||
![]() | 2 | 6 | 6 | 8 | ![]() | 710 | 65 | 5 | |||||||||||||||||||
![]() | 6 | 4 | 2 | ![]() | 0 | 0 | |||||||||||||||||||||
![]() | 5 | 4 | 8 | ![]() | 6 | 6 | |||||||||||||||||||||
8 | ![]() | 7 | 6 |
Bottom half
First round | Second round | Quarterfinals | Semifinals | ||||||||||||||||||||||||
5 | ![]() | 4 | 4 | ||||||||||||||||||||||||
![]() | 6 | 6 | ![]() | 6 | 6 | ||||||||||||||||||||||
Q | ![]() | 4 | 0 | ![]() | 3 | 1 | |||||||||||||||||||||
![]() | 6 | 6 | ![]() | 1 | 2 | ||||||||||||||||||||||
WC | ![]() | 6 | 1 | 1 | 3 | ![]() | 6 | 6 | |||||||||||||||||||
![]() | 4 | 6 | 6 | ![]() | 2 | 2 | |||||||||||||||||||||
Q | ![]() | 3 | 0 | 3 | ![]() | 6 | 6 | ||||||||||||||||||||
3 | ![]() | 6 | 6 | 3 | ![]() | 1 | 6 | 6 | |||||||||||||||||||
7 | ![]() | 6 | 6 | 2 | ![]() | 6 | 4 | 4 | |||||||||||||||||||
![]() | 4 | 4 | 7 | ![]() | 4 | 4 | |||||||||||||||||||||
![]() | 64 | 6 | 77 | ![]() | 6 | 6 | |||||||||||||||||||||
![]() | 77 | 1 | 63 | ![]() | 3 | 4 | |||||||||||||||||||||
WC | ![]() | 3 | 6 | 6 | 2 | ![]() | 6 | 6 | |||||||||||||||||||
WC | ![]() | 6 | 3 | 2 | WC | ![]() | 2 | 2 | |||||||||||||||||||
![]() | 5 | 2 | 2 | ![]() | 6 | 6 | |||||||||||||||||||||
2 | ![]() | 7 | 6 |
gollark: oh dear.
gollark: Well, the outsourced `parsedatetime` stuff can probably do it.
gollark: Good luck.
gollark: Fine.```python# from here: https://github.com/Rapptz/RoboDanny/blob/18b92ae2f53927aedebc25fb5eca02c8f6d7a874/cogs/utils/time.pyshort_timedelta_regex = re.compile("""(?:(?P<years>[0-9]{1,8})(?:years?|y))? # e.g. 2y(?:(?P<months>[0-9]{1,8})(?:months?|mo))? # e.g. 2months(?:(?P<weeks>[0-9]{1,8})(?:weeks?|w))? # e.g. 10w(?:(?P<days>[0-9]{1,8})(?:days?|d))? # e.g. 14d(?:(?P<hours>[0-9]{1,8})(?:hours?|h))? # e.g. 12h(?:(?P<minutes>[0-9]{1,8})(?:minutes?|m))? # e.g. 10m(?:(?P<seconds>[0-9]{1,8})(?:seconds?|s))? # e.g. 15s """, re.VERBOSE)def parse_short_timedelta(text): match = short_timedelta_regex.fullmatch(text) if match is None or not match.group(0): raise ValueError("parse failed") data = { k: int(v) for k, v in match.groupdict(default=0).items() } return datetime.datetime.utcnow() + relativedelta(**data)cal = parsedatetime.Calendar()def parse_humantime(text): time_struct, parse_status = cal.parse(text) if parse_status == 1: return datetime.datetime(*time_struct[:6]) else: raise ValueError("parse failed")def parse_time(text): try: return datetime.datetime.strptime(text, "%d/%m/%Y") except: pass try: return parse_short_timedelta(text) except: pass try: return parse_humantime(text) except: pass raise ValueError("could not parse time")```
gollark: ... no.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.